import page
from base_page.basepage import BasePage

import allure
import time
from config import log


# 对象层

class LoginPage(BasePage):
    def __init__(self, type="app"):
        # 继承基类的属性
        # super().__init__()
        super().__init__(type)
        self.driver.switch_to.context(self.driver.contexts[-1])

    # 手机号输入框
    @allure.step(title='查找输入手机号码框输入数据')  # step 报告标记测试步骤
    def find_username(self):
        # 使用官方类方法
        # return self.driver.find_element("id", 'username')

        # 定义方法进行解包（basepage）
        return self.find_element(page.username)

        # 定义方法根据判断调用不同方法（basepage）
        # return self.find_element_if("id", "username")

        # 密码输入框

    @allure.step(title='查找密码框输入密码')
    def find_pwd(self):
        # return self.driver.find_element("id", 'password')
        return self.find_element(page.password)

    # 勾选协议
    @allure.step(title='勾选保护同相关登录协议')
    def find_agreement(self):
        return self.find_element(page.checkbox)

    # 登录button
    @allure.step(title='点击登录按钮登录')
    def find_Button(self):
        return self.find_element(page.login)

    def find_login_page(self, values):
        return self.find_element(values)


# 操作层
class LoginHandle(object):
    def __init__(self):
        self.page = LoginPage()

    def input_user(self, user):
        self.page.find_username().send_keys(user)

    def input_pwd(self, pwd):
        self.page.find_pwd().send_keys(pwd)

    def click_checkbox(self):
        self.page.find_agreement().click()

    def click_button(self):
        self.page.find_Button().click()


# 逻辑层
class LoginProxy(object):
    def __init__(self):
        self.handle = LoginHandle()

    # 使用用户名和密码登录
    def login_pwd(self, user, pwd):
        log.info(f"正在输入账号{user}")
        self.handle.input_user(user)
        time.sleep(2)
        log.info("正在输入密码****")
        self.handle.input_pwd(pwd)
        time.sleep(2)
        log.info("勾选协议")
        self.handle.click_checkbox()
        time.sleep(1.5)
        log.info("正在登录")
        self.handle.click_button()
